#include<iostream>
#include <vector>  // 引入vector库，用于存储整数数组
#include <unordered_map>  // 引入unordered_map库，用于存储哈希表

using namespace std; 

class Solution {  // 定义Solution类
public:
    vector<int> twoSum(vector<int>& nums, int target) {  // 定义twoSum函数，输入为整数数组nums和目标值target
        unordered_map<int, int> num_map;  // 定义一个空的unordered_map，用于存储数组中的数字和它们的下标
        for (int i = 0; i < nums.size(); ++i) {  // 遍历数组nums中的每个数字       	
            int complement = target - nums[i];  // 计算出当前数字与目标值之间的差值
            if (num_map.count(complement)) {  // 在num_map中查找是否存在值为complement的键
                return vector<int>{num_map[complement], i};  // 如果存在，返回符合条件的两个数的下标
            }
            num_map[nums[i]] = i;  // 如果不存在，则将当前数字nums[i]和它的下标i存储到num_map中
        }
        return vector<int>{};  // 如果没有找到符合条件的两个数，返回一个空的vector
    }
};

int main() {
    vector<int> nums = {2, 7, 11, 15};
    int target = 9;
    Solution s;  // 创建Solution类的实例
    vector<int> result = s.twoSum(nums, target);  // 调用Solution类中的twoSum函数，获取符合要求的两个数在数组中的下标
    cout << "[" << result[0] << ", " << result[1] << "]" << endl;
    return 0;
}